package com.flow.modules.dingtalk.entity;

import lombok.Builder;
import lombok.Data;

import java.io.Serializable;

/**
 * @author liuledong [1125615798@qq.com]
 * @version V1.0
 * @description: 钉钉考勤返回值实体类
 * @date 2023/5/6 15:14
 */
@Data
@Builder
public class AttenDanceEntity implements Serializable {
    private static final long serialVersionUID = -53409297247748263L;

    /**
     * 用户打卡定位精度。
     */
    private String userAccuracy;

    /**
     * 班次ID。
     */
    private Long classId;

    /**
     * 用户打卡纬度。
     */
    private String userLatitude;

    /**
     * 用户打卡经度。
     */
    private String userLongitude;

    /**
     * 用户打卡地址。
     */
    private String userAddress;

    /**
     * 打卡设备ID。
     */
    private String deviceId;

    /**
     * 定位方法。
     */
    private String locationMethod;

    /**
     * 是否合法：
     * <p>
     * Y: 合法
     * N：不合法
     */
    private String isLegal;

    /**
     * 实际打卡时间。
     */
    private Data userCheckTime;


    /**
     * 关联的审批实例ID，当该字段非空时，表示打卡记录与请假、加班等审批有关
     */
    private String procInstId;

    /**
     * 计算迟到和早退，基准时间；也可作为排班打卡时间。
     */
    private Data baseCheckTime;


    /**
     * 关联的审批ID，当该字段非空时，表示打卡记录与请假、加班等审批有关。
     */
    private Long approveId;


    /**
     * 打卡结果：
     * <p>
     * Normal：正常
     * Early：早退
     * Late：迟到
     * SeriousLate：严重迟到
     * Absenteeism：旷工迟到
     * NotSigned：未打卡
     */
    private String timeResult;


    /**
     * 位置结果：
     * <p>
     * Normal：范围内
     * Outside：范围外
     * NotSigned：未打卡
     */
    private String locationResult;


    /**
     * 考勤类型：
     * <p>
     * OnDuty：上班
     * OffDuty：下班
     */
    private String checkType;


    /**
     * 数据来源：
     * <p>
     * ATM：考勤机打卡（指纹/人脸打卡）
     * BEACON：IBeacon
     * DING_ATM：钉钉考勤机（考勤机蓝牙打卡）
     * USER：用户打卡
     * BOSS：老板改签
     * APPROVE：审批系统
     * SYSTEM：考勤系统
     * AUTO_CHECK：自动打卡
     */
    private String sourceType;


    /**
     * 打卡人的userId。
     */
    private String userId;


    /**
     * 工作日。
     */
    private Data workDate;


    /**
     * 企业ID。
     */
    private String corpId;


    /**
     * 排班ID。
     */
    private Long planId;


    /**
     * 考勤组ID。
     */
    private Long groupId;


    /**
     * 考勤ID。
     */
    private Long id;


    /**
     * 异常信息类型：
     * <p>
     * Security：安全相关原因
     * Other：其他原因
     */
    private String invalidRecordType;


    /**
     * 用户打卡wifi SSID。
     */
    private String userSsid;


    /**
     * 用户打卡wifi Mac地址。
     */
    private String userMacAddr;


    /**
     * 排班打卡时间。
     */
    private Data planCheckTime;


    /**
     * 基准地址。
     */
    private String baseAddress;


    /**
     * 基准经度。
     */
    private String baseLongitude;


    /**
     * 基准纬度。
     */
    private String baseLatitude;


    /**
     * 基准定位精度。
     */
    private String baseAccuracy;


    /**
     * 基准wifi ssid。
     */
    private String baseSsid;


    /**
     * 基准Mac地址。
     */
    private String baseMacAddr;


    /**
     * 打卡记录创建时间。
     */
    private Data gmtCreate;

    /**
     * 对应的invalidRecordType异常信息的具体描述。
     */
    private String invalidRecordMsg;

    /**
     * 打卡记录修改时间。
     */
    private Data gmtModified;

    /**
     * 打卡备注。
     */
    private String outsideRemark;

    /**
     * 打卡设备序列号。
     */
    private String deviceSN;

    /**
     * 关联的业务ID。
     */
    private String bizId;

}
